Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

293
Visualizações
¿Para qué sirve el operador "con" en C#?

Me he encontrado con este código:

 var rectangle = new Rectangle(420, 69); var newOne = rectangle with { Width = 420 }

Me preguntaba acerca with la palabra clave en el código C#. ¿Para qué sirve? ¿Y cómo se puede usar? ¿Y qué beneficios aporta a la lengua?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Es un operador que se usa en expresiones para facilitar la duplicación de un objeto, anulando algunas de sus propiedades/campos públicos (opcional) con expresión - MSDN

Actualmente solo se puede utilizar con registros. Pero tal vez no habrá tal restricción en el futuro (suposición).

Aquí hay un ejemplo de cómo se puede usar:

 // Declaring a record with a public property and a private field record WithOperatorTest { private int _myPrivateField; public int MyProperty { get; set; } public void SetMyPrivateField(int a = 5) { _myPrivateField = a; } }

Ahora veamos cómo se puede usar with operator:

 var firstInstance = new WithOperatorTest { MyProperty = 10 }; firstInstance.SetMyPrivateField(11); var copiedInstance = firstInstance with { }; // now "copiedInstance" also has "MyProperty" set to 10 and "_myPrivateField" set to 11. var thirdCopiedInstance = copiedInstance with { MyProperty = 100 }; // now "thirdCopiedInstance " also has "MyProperty" set to 100 and "_myPrivateField" set to 11. thirdCopiedInstance.SetMyPrivateField(-1); // now "thirdCopiedInstance " also has "MyProperty" set to 100 and "_myPrivateField" set to -1.

NOTA para tipos de referencia de MSDN:

En el caso de un miembro de tipo de referencia, solo se copia la referencia a una instancia de miembro cuando se copia un operando. Tanto el operando de copia como el original tienen acceso a la misma instancia de tipo de referencia.

Esa lógica se puede modificar modificando el constructor de copia de un tipo de registro. Cita de MSDN:

De forma predeterminada, el constructor de copias es implícito, es decir, generado por el compilador. Si necesita personalizar la semántica de copia de registro, declare explícitamente un constructor de copia con el comportamiento deseado.

 protected WithOperatorTest(WithOperatorTest original) { // Logic to copy reference types with new reference }

Y en términos de los beneficios que brinda, creo que ahora debería ser bastante obvio que hace que la copia de instancias sea mucho más fácil y conveniente.

over 4 years ago · Santiago Trujillo Relatório

0

Básicamente, el operador with creará una nueva instancia de objeto (solo registros, por ahora), al "hacer frente a los valores" del objeto "fuente" y anular algunas propiedades con nombre en el objeto de destino.

Por ejemplo, en lugar de hacer esto:

 var person = new Person("John", "Doe") { MiddleName = "Patrick" }; var modifiedPerson = new Person(person.FirstName, person.LastName) { MiddleName = "William" };

Puedes hacerlo:

 var modifiedPerson = person with { MiddleName = "Patrick" };

Básicamente, escribirás menos código.

Use esta fuente para obtener más detalles sobre el ejemplo anterior y la documentación oficial para obtener más ejemplos.

over 4 years ago · Santiago Trujillo Relatório

0

La respuesta corta es la siguiente: se agregó with palabra clave en C# para facilitar la copia de objetos complicados, con la posibilidad de anular algunas de las propiedades públicas. Los ejemplos ya se proporcionan brevemente en la respuesta aceptada.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda